Notre projet porte sur la représentation des Aibnbs au sein des grandes capitales européennes, plus particulièrement sur le prix de location des biens imobiliers renseignés sur l’application. Notre travail comporte deux parties. Dans la première nous tenterons d’expliquer les différences de prix entre les logements et dans la deuxième nous nous intéresserons à la représentation graphique de la répartitions des biens.
Nos données proviennent du site kaggle : https://www.kaggle.com/datasets/thedevastator/airbnb-prices-in-european-cities
Nous disposons du prix des locations la semaine et le week-end pour 10 capitales européennes.
| prix_moyen | Période |
|---|---|
| 270.86 | Semaine |
| 276.33 | Weekend |
On cherche à quantifier l’influence de plusieurs variables explicatives sur le prix des Airbnbs. Plus précisément, nous cherchons les variables qui permettent d’expliquer la différence de prix entre la semaine et le weekend. On observe dans un premier temps que cette différence de prix n’est pas la même pour tous les biens, comme le montre les boxplots suivant:
Il est clair que les Airbnbs sont plus chers le weekend que la semaine. On peut remarquer cependant que la différence des prix n’est pas exactement la même pour tous les Airbnbs. Il semblerait en effet que plus un logement est cher la semaine, plus ce dernier est cher le weekend. Nous avons fait le choix de limiter la taille de l’échantillon représenté car, dans notre base de données, il y a une trentaine de logements dont le coût de location dépasse les 8 000€, ce qui compromet la comparaison.
Nous allons à présent modéliser le prix des logements en fonction des variables suivantes:
library(plotly)##
## Attachement du package : 'plotly'
## L'objet suivant est masqué depuis 'package:ggplot2':
##
## last_plot
## L'objet suivant est masqué depuis 'package:stats':
##
## filter
## L'objet suivant est masqué depuis 'package:graphics':
##
## layout
library(dplyr)##
## Attachement du package : 'dplyr'
## Les objets suivants sont masqués depuis 'package:stats':
##
## filter, lag
## Les objets suivants sont masqués depuis 'package:base':
##
## intersect, setdiff, setequal, union
## corrplot 0.92 loaded
A la vue du graphique précédent, on n’observe pas de différence significative entre la corrélation des variables la semaine et le week-end.
On peut réaliser une analyse de variance (ANOVA) pour déterminer si le prix moyen des logements diffère significativement entre les différentes catégories de room_type ou de host_is_superhost.
On remarque que les maisons et les appartements entiers dont les propriétaires ne sont pas super host ont tendance à être plus chers que ceux dont les propriétaires sont super host, ce qui semble déconcertant. On observe l’inverse pour ce qui est des chambres partagés et des chambres simples.
| term | df | sumsq | meansq | statistic | p.value |
|---|---|---|---|---|---|
| room_type | 2 | 81985544 | 40992772.2 | 351.15 | 0 |
| host_is_superhost | 1 | 6005806 | 6005805.6 | 51.45 | 0 |
| Residuals | 26324 | 3073069223 | 116740.2 | NA | NA |
| diff | lwr | upr | p adj | |
|---|---|---|---|---|
| Private room-Entire home/apt | -113.35 | -123.60 | -103.11 | 0.00 |
| Shared room-Entire home/apt | -179.52 | -238.56 | -120.47 | 0.00 |
| Shared room-Private room | -66.16 | -125.44 | -6.89 | 0.02 |
## Analyse de variance pour les prix du week-end
anova_result <- aov(prix_weekend ~ room_type + host_is_superhost, data=data_R_bnb)
anova_summary <- tidy(anova_result)
kable(anova_summary, digits = 2, caption = "Résultats de l'ANOVA pour les prix du week-end")| term | df | sumsq | meansq | statistic | p.value |
|---|---|---|---|---|---|
| room_type | 2 | 66080378 | 33040188.86 | 416.39 | 0 |
| host_is_superhost | 1 | 8009146 | 8009146.03 | 100.93 | 0 |
| Residuals | 26324 | 2088799673 | 79349.63 | NA | NA |
tukey_result <- TukeyHSD(anova_result, "room_type")
tukey_summary <- as.data.frame(tukey_result$`room_type`)
kable(tukey_summary, digits = 2, caption = "Comparaison multiple de Tukey pour les prix du week-end")| diff | lwr | upr | p adj | |
|---|---|---|---|---|
| Private room-Entire home/apt | -101.53 | -109.98 | -93.09 | 0 |
| Shared room-Entire home/apt | -167.26 | -215.95 | -118.58 | 0 |
| Shared room-Private room | -65.73 | -114.60 | -16.86 | 0 |
#regression semaine
reg1 <- lm(prix_semaine~room_type+person_capacity+host_is_superhost+cleanliness_rating+bedrooms+guest_satisfaction_overall+metro_dist+dist, data = data_R_bnb)
tbl1 <- kable(summary(reg1)$coefficients, caption = "Résumé de la régression linéaire pour la semaine", border = "solid")
# reg lin weekend
reg2 <- lm(prix_weekend~room_type+person_capacity+host_is_superhost+cleanliness_rating+guest_satisfaction_overall+bedrooms+metro_dist+dist, data = data_R_bnb)
tbl2 <- kable(summary(reg2)$coefficients, caption = "Résumé de la régression linéaire pour le weekends", border = "solid")
### Résumé de la régression linéaire pour le premier jeu de données
tbl1| Estimate | Std. Error | t value | Pr(>|t|) | |
|---|---|---|---|---|
| (Intercept) | 208.0888913 | 24.9287917 | 8.347332 | 0.0000000 |
| room_typePrivate room | -100.1301521 | 5.1665056 | -19.380633 | 0.0000000 |
| room_typeShared room | -176.1526713 | 24.9145960 | -7.070260 | 0.0000000 |
| person_capacity | 3.7584001 | 2.3031164 | 1.631876 | 0.1027176 |
| host_is_superhostTrue | -36.9849807 | 5.0332327 | -7.348156 | 0.0000000 |
| cleanliness_rating | -4.4837857 | 3.1759480 | -1.411794 | 0.1580223 |
| bedrooms | 85.9268580 | 4.2098371 | 20.410970 | 0.0000000 |
| guest_satisfaction_overall | 0.5108604 | 0.3369012 | 1.516351 | 0.1294426 |
| metro_dist | -31.9233201 | 3.0961241 | -10.310737 | 0.0000000 |
| dist | 6.2195975 | 1.0834416 | 5.740593 | 0.0000000 |
### Résumé de la régression linéaire pour le deuxième jeu de données
tbl2| Estimate | Std. Error | t value | Pr(>|t|) | |
|---|---|---|---|---|
| (Intercept) | 237.0565123 | 20.5103482 | 11.5578980 | 0.0000000 |
| room_typePrivate room | -90.7245344 | 4.2507808 | -21.3430281 | 0.0000000 |
| room_typeShared room | -165.4936406 | 20.4986686 | -8.0733849 | 0.0000000 |
| person_capacity | 3.2180134 | 1.8949061 | 1.6982443 | 0.0894735 |
| host_is_superhostTrue | -41.2353827 | 4.1411295 | -9.9575206 | 0.0000000 |
| cleanliness_rating | 1.9060316 | 2.6130348 | 0.7294322 | 0.4657438 |
| guest_satisfaction_overall | -0.2504983 | 0.2771879 | -0.9037127 | 0.3661561 |
| bedrooms | 74.3852759 | 3.4636747 | 21.4758264 | 0.0000000 |
| metro_dist | -32.1767754 | 2.5473590 | -12.6314254 | 0.0000000 |
| dist | 5.9211076 | 0.8914096 | 6.6424095 | 0.0000000 |
Aucune caractéristique ne semblent plus importante que les autres quand il s’agit d’expliquer la différence de prix des Airbnb entre la semaine et le weekend.